// 使用当前时间的“时+分”信息为名称来创建一个文件夹
// 然后在该文件夹下以“秒”信息为名称来创建一个文件
// 需要判断文件夹是否存在
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>
#include <time.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char *argv[]){
	
	/*创建临时变量，用于记录文件创建过程中的信息*/

	// 创建目录时的信息
	int mkdirtemp;
	
	// 创建文件时的信息
	int mkfiletemp;

	DIR *dp;

	// 记录时间信息
	char dirtimebuf[5];
	char filetimebuf[3];

	char dirnamebuf[8]="DIR";
	char filenamebuf[7]="FILE";

	// 创建时间结构体指针，用来记录时间信息
	struct tm *p;

	// 用来记录创建文件信息
	int fd,temp;

	// 创建time_t变量，用来记录时间信息
	time_t timetemp;

	// 记录当前路径的信息
	char npath[100];


	// 读取当前信息
	time(&timetemp);

	// 打印当前时间
	printf("当前时间为：%s\n", asctime(gmtime(&timetemp)));

	// 将时间信息转为tm结构体指针格式
	p = localtime(&timetemp);

	printf("时+分：%02d:%02d\n", p->tm_hour, p->tm_min);
	printf("秒：%02d\n", p->tm_sec);

	// 将时间信息写入到dirtimebuf 和 filetimebuf中
	sprintf(dirtimebuf, "%02d%02d", p->tm_hour, p->tm_min);
	sprintf(filetimebuf, "%02d", p->tm_sec);

	// 将时间信息写入到dirnamebuf,filenamebuf缓冲器中，形成文件名
	strcat(dirnamebuf,dirtimebuf);
	strcat(filenamebuf, filetimebuf);

	// 判断文件夹dirnamebuf是否存在，如果不存在则创建该文件夹,如果存在则打开
	dp = opendir(dirnamebuf);
	
	if(dp == NULL){
		printf("该文件夹%s不存在！\n", dirnamebuf);
		printf("下面将创建该文件夹！...\n");
		
		mkdirtemp = mkdir(dirnamebuf, S_IRUSR|S_IWUSR|S_IXUSR);

		// 判断文件夹是否创建成功
		if(mkdirtemp == -1){
			printf("文件夹%s创建失败!\n",dirnamebuf);
			return -1;
		}

		printf("文件夹%s创建成功!\n", dirnamebuf);

		// 使用chdir函数进入到该文件夹中
		temp = chdir(dirnamebuf);
		
		if(temp == -1){
			printf("切换目录%s失败!\n", dirnamebuf);
			return -2;
		}

		printf("切换目录%s成功!\n", dirnamebuf);

		// 使用getcmd函数读取当前路径
		printf("当前路径为：%s\n",getcwd(npath,100));
		
		// 进入到文件夹后，以秒为单位创建文件
		mkfiletemp = open(filenamebuf, O_RDWR | O_CREAT, S_IRWXU);
	
		if(mkfiletemp == -1){
			printf("创建文件%s失败！\n", filenamebuf);
			return -3;
		}

		printf("创建文件 %s 成功!\n", filenamebuf);
		close(mkfiletemp);
		return 0;

	}else{
		printf("该文件夹%s存在！\n", dirnamebuf);
		closedir(dp);
		// 如果该文件夹存在，则进入文件夹并创建文件
		temp = chdir(dirnamebuf);
		
		if(temp == -1){
			printf("切换目录%s失败!\n", dirnamebuf);
			return -2;
		}

		printf("切换目录%s成功!\n", dirnamebuf);

		// 使用getcmd函数读取当前路径
		printf("当前路径为：%s\n",getcwd(npath,100));

		mkfiletemp = open(filenamebuf, O_RDWR | O_CREAT, S_IRWXU);
		if(mkfiletemp == -1){
			printf("创建文件%s失败!\n",filenamebuf);
			return -3;
		}
		
		printf("创建文件 %s 成功!\n", filenamebuf);

		// 关闭文件夹
		close(mkfiletemp);
		
		return 0;
	}
}
